﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Ferreteria.Forms.GestionUsuarios
{
    public partial class frmGestionUsuarios : Form
    {
        DisancoEntities context;

        public frmGestionUsuarios()
        {
            InitializeComponent();

            cargarGrillaUsuarios();
        }

        void cargarGrillaUsuarios()
        {
            context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);
            dgvUsuarios.Rows.Clear();

            foreach (var usuario in context.Usuarios)
            {
                int i = dgvUsuarios.Rows.Add();

                dgvUsuarios.Rows[i].Cells["usuario_id"].Value = usuario.usuario_id;
                dgvUsuarios.Rows[i].Cells["usuario_nombre"].Value = usuario.usuario_nombre;
                dgvUsuarios.Rows[i].Cells["usuario_nombrecompleto"].Value = usuario.usuario_nombrecompleto;

                switch (usuario.usuario_categoria)
                {
                    case "A":
                        dgvUsuarios.Rows[i].Cells["usuario_categoria"].Value = "Administrador";
                        break;
                    case "B":
                        dgvUsuarios.Rows[i].Cells["usuario_categoria"].Value = "Contador";
                        break;
                    default:
                        dgvUsuarios.Rows[i].Cells["usuario_categoria"].Value = "Empleado";
                        break;
                }
            }

            if (dgvUsuarios.CurrentRow != null)
                tsbEliminarUsuario.Enabled = true;
            else
                tsbEliminarUsuario.Enabled = false;
        }

        private void tsbAgregarUsuario_Click(object sender, EventArgs e)
        {
            frmAgregarUsuario nuevoUsuario = new frmAgregarUsuario();
            nuevoUsuario.ShowDialog();

            cargarGrillaUsuarios();
        }

        private void tsbEliminarUsuario_Click(object sender, EventArgs e)
        {
            if ((string)dgvUsuarios.CurrentRow.Cells["usuario_nombre"].Value != "admin")
            {
                DialogResult dr = MessageBox.Show("¿Seguro que desea eliminar este usuario?", "Confirmar operación", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (dr == System.Windows.Forms.DialogResult.Yes)
                {
                    try
                    {
                        int usuarioID = (int)dgvUsuarios.CurrentRow.Cells["usuario_id"].Value;
                        Usuarios usuario = context.Usuarios.FirstOrDefault(u => u.usuario_id == usuarioID);
                        context.Usuarios.DeleteObject(usuario);
                        context.SaveChanges();

                        cargarGrillaUsuarios();
                    }
                    catch
                    {
                        MessageBox.Show("Error al eliminar el usuario", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else
            {
                MessageBox.Show("No se puede eliminar al usuario administrador por defecto", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
